A Tabling Implementation Based on Variables with Multiple Bindings
نویسندگان
چکیده
Suspension-based tabling systems have to save and restore computation states belonging to OR branches. Stack freezing combined with (forward) trailing is among the better-known implementation approaches for this purpose. Resuming a goal using this technique reinstalls the bindings for all the variables in the environment where the goal was suspended. In this paper we explore an alternative approach where variables can keep track of several bindings, associated with suspensions. Resuming a goal boils down to determining which suspension has to be resumed, in order to select, when dereferencing, the bindings which were active at the moment of suspending. We present the ideas behind this approach, highlight several advantages over other suspension-based implementations, and perform an experimental evaluation. We also recall the similarity between OR-parallelism and suspension-based implementations of tabling, and discuss similarities with the Version Vectors Method, among others.
منابع مشابه
An Efficient Implementation of Linear Tabling Based on Dynamic Reordering of Alternatives
Tabling is a technique of resolution that overcomes some limitations of traditional Prolog systems in dealing with recursion and redundant sub-computations. We can distinguish two main categories of tabling mechanisms: suspension-based tabling and linear tabling. In suspension-based tabling, a tabled evaluation can be seen as a sequence of sub-computations that suspend and later resume. Linear ...
متن کاملA Simple and Efficient Implementation of Concurrent Local Tabling
Newer Prolog implementations commonly offer support for multi-threading, and have also begun to offer support for tabling. However, most implementations do not yet integrate tabling with multithreading, and in particular do not support the sharing of a tabled computation among threads. In this paper we present algorithms to share completed tables among threads based on Concurrent Local SLG eval...
متن کاملTabling in Mercury: Design and Implementation
For any LP system, tabling can be quite handy in a variety of tasks, especially if it is efficiently implemented and fully integrated in the language. Implementing tabling in Mercury poses special challenges for several reasons. First, Mercury is both semantically and culturally quite different from Prolog. While decreeing that tabled predicates must not include cuts is acceptable in a Prolog s...
متن کاملOn combining linear-based strategies for tabled evaluation of logic programs
Tabled evaluation is a recognized and powerful technique that overcomes some limitations of traditional Prolog systems in dealing with recursion and redundant sub-computations. We can distinguish two main categories of tabling mechanisms: suspension-based tabling and linear tabling. While suspension-based mechanisms are considered to obtain better results in general, they have more memory space...
متن کاملProgram Updating by Incremental and Answer Subsumption Tabling
We explore the use of state-of-the-art Logic Programming (LP) implementation techniques to exploit their use in addressing a classical non-monotonic reasoning problem, that of LP program updates, with incidence on representing change, i.e. internal or self and external or world changes. We do so starting from a given LP update language and a given LP implementation system. We propose and foster...
متن کامل